// package com.symaster.common.connect.v3.util;
//
// import com.symaster.common.util.IOUtil;
//
// import java.io.ByteArrayOutputStream;
// import java.io.IOException;
// import java.io.InputStream;
// import java.io.OutputStream;
// import java.util.Random;
//
// /**
//  * @author yinmiao
//  * @version 2023/12/26
//  */
// public class SocketUtil {
//
//     public static final int limit = 8192;
//
//     public static byte[] read(InputStream inputStream) {
//         MyOutputStream byteArrayOutputStream = new MyOutputStream();
//
//         try {
//             byte[] endTagCache = new byte[limit];
//
//             byte[] bytes = new byte[8192];
//             int i;
//             while ((i = inputStream.read(bytes)) > 0) {
//                 byteArrayOutputStream.write(bytes, 0, i);
//                 boolean over = true;
//                 for (int i1 = endTag.length - 1; i1 >= 0; i1--) {
//                     byte b = endTag[i1];
//                     byte b2 = byteArrayOutputStream.getBuf()[byteArrayOutputStream.getCount() - 1 - (endTag.length - 1 - i1)];
//                     if (b != b2) {
//                         over = false;
//                         break;
//                     }
//                 }
//                 if (over) {
//                     break;
//                 }
//             }
//
//             int readL = byteArrayOutputStream.getCount() - endTag.length;
//             if (readL <= 0) {
//                 return new byte[0];
//             }
//
//             byte[] retBytearray = new byte[readL];
//             System.arraycopy(byteArrayOutputStream.getBuf(), 0, retBytearray, 0, retBytearray.length);
//
//             return retBytearray;
//         } catch (IOException e) {
//             throw new RuntimeException(e);
//         } finally {
//             IOUtil.close(byteArrayOutputStream);
//         }
//     }
//
//     public static void write(OutputStream outputStream, byte[] bytearray) {
//         byte[][] split = split(bytearray);
//
//         for (int i = 0; i < split.length; i++) {
//             byte[] bytes1 = split[i];
//
//
//         }
//
//         try {
//             outputStream.write(bytearray);
//         } catch (IOException e) {
//             throw new RuntimeException(e);
//         }
//     }
//
//     private static byte[][] split(byte[] bytearray) {
//         if (bytearray.length < limit - reserveSize) {
//             return new byte[][]{bytearray};
//         }
//
//
//     }
//
//     public static void over(OutputStream outputStream) {
//         try {
//             outputStream.write(endTag);
//         } catch (IOException e) {
//             throw new RuntimeException(e);
//         }
//     }
//
//     public static class MyOutputStream extends ByteArrayOutputStream {
//         public byte[] getBuf() {
//             return buf;
//         }
//
//         public int getCount() {
//             return count;
//         }
//     }
// }
